iT邦幫忙

1

30. SQL Server學習日記 - 搜尋CASE運算式

  • 分享至 

  • xImage
  •  

一、搜尋CASE運算式

語法 :

CASE  WHEN <判斷式1>  THEN  <回應結果1>
      WHEN <判斷式2>  THEN  <回應結果2>
	  WHEN <判斷式3>  THEN  <回應結果3>
	  ……
	  ELSE  <回應結果>
END

說明 :
 從判斷WHERE子句中的<判斷式>開始,即判斷真偽值,
→若結果為真值(TRUE),則回傳至THEN子句的<回應結果>,
→若結果為非真值(FALSE),則移至下一個WHERE子句再來判斷,
→若全部WHEN子句皆不為真,則回傳ELSE回應結果,
→END結束全部過程 (最後的END不能省略)

<< 接下來使用這個資料表 >>
https://ithelp.ithome.com.tw/upload/images/20231006/20163415peh3awUeFL.png

Ex1 : 使用CASE運算式將早餐分類分別加上A、B、C字串

SELECT food_name,
	CASE WHEN food_catalg = '熱食'
		 THEN 'A:'+ food_catalg 
		 WHEN food_catalg = '炸物'
		 THEN  'B:'+food_catalg
		 WHEN food_catalg = '飲料'
		 THEN  'C:'+ food_catalg
		 ELSE NULL
		 END AS ABC
FROM food

執行結果
https://ithelp.ithome.com.tw/upload/images/20231016/20163415xKxoSzB2vg.png

二、CASE運算式可以寫入的位置

說明 : 由於CASE屬於運算式,所以所有可以寫入運算式的位置,都可以寫入CASE運算式,下面會介紹使用CASE運算式將SELECT敘述的結果由縱向轉橫向

Ex2 : 使用CASE運算式將SELECT敘述的結果由縱向轉橫向

SELECT SUM(CASE WHEN food_catalg = '熱食'
		THEN buy_price ELSE 0 END) AS sum_熱食,
		SUM(CASE WHEN food_catalg = '炸物'
		THEN buy_price ELSE 0 END) AS sum_炸物,
		SUM(CASE WHEN food_catalg = '飲料'
		THEN buy_price ELSE 0 END) AS sum_飲料
FROM food;

執行結果
https://ithelp.ithome.com.tw/upload/images/20231016/20163415klR2sgzBVf.png

Ex3 : GROUP BY子句無法做到縱向轉橫向

SELECT food_catalg,
	   SUM(buy_price) AS sum_price
FROM food
GROUP BY food_catalg;

執行結果
https://ithelp.ithome.com.tw/upload/images/20231016/20163415ozwVcOjLJX.png


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言